[ create a new paste ] login | about

Link: http://codepad.org/qMbe2Vxg    [ raw code | output | fork ]

C++, pasted on Aug 1:
#include <iostream> 
#include <string> 
using namespace std;
class String //базовый класс 
{ 
protected:  
	enum {SZ = 80 }; //размер всех объектов String 
	char str [SZ]; //содержит С-строку 
public: 
	String() //конструктор без аргументов 
	{str [0] ='\0';} 
	String(char s []) //конструктор c одинм аргументом
	{strcpy(str,s);} //преобразование в String 
	void display()const //вывести String 
	{cout << str;} 
	operator char*() //функция преобразования 
	{return str;} //преобразовать String в C-string 
	};
	class Pstring :public String //порожденный класс 
	{ 
	public: 
		Pstring(char s[]);
	};
	Pstring::Pstring(char s [] ) //конструктор для Pstring 
	{ 
		if(strlen(s)>SZ-1) //если слишком длинная строка. 
		{ 
			int j = 0;
			for(j = 0 ;j<SZ-1;j++) //копировать первые SZ-1 
				str [j] = s [j]; //символы «вручную» 
				str [j] = '\0'; //добавить служебный символ 
		} 
			else //если не слишком длинная. 
				String(s); //создать нормальную строку 
	}
int main()
{
	setlocale(0,"");
	Pstring s1 ="Это очень-очень длинная строка, которая, возможно,да, нет. точно, - превысит размер, ограниченный SZ."; 
	cout <<"\nsl=";
	cout << static_cast<char*>(s1) << endl;
	Pstring s2 ="А это коротенькая строка.";
	cout <<"\ns2=";
	s2.display();// пробывал так cout << static_cast<char*>(s2);
	//,но картина не изменилась
	cout << endl;
	getchar();
	return 0;
} 


Output:
1
2
3
4
cc1plus: warnings being treated as errors
In function 'int main()':
Line 39: warning: deprecated conversion from string constant to 'char*''
Line 42: warning: deprecated conversion from string constant to 'char*''


Create a new paste based on this one


Comments: