c++类学习——00
#include <iostream>
#include <cstring>//c中的字符串
#include <string>//c++的字符串
using namespace std;
class Test
{
// e类的私有方法,只能通过类内部访问
private:
/* data */
public:
double salary;
// 类的构造函数,他和类的名称完全相同,不返回任何值,用于设置类成员的值,可以带参数
// 类的构造函数不需要调用,只要创建该类的实例,就会自动执行该方法。
Test(/* args */);
// 类的析构函数,只在类的对象删除时执行,不会返回任何值,也不带参数
// 析构函数有助于在跳出程序(比如关闭文件、释放内存等)前释放资源。
// 类的析构函数也不需要调用,只要程序结束时,会将该类的实例从内存释放,就会自动执行该方法。
~Test();
};
Test::Test(/* args */)
{
cout << "这是类的构造函数,不需要调用"<< endl;
}
Test::~Test()
{
cout << "这是类的析构函数"<< endl;
}
//定义一个返回值是自定义类指针的函数
Test* retclass(double dbsalary){
Test classtest1; //类初始化会调用Test()方法
Test* classTest = &classtest1;
classTest->salary = dbsalary; //使用指针时必须要有指向,否则会出现 Segmentation fault 错误
cout<< classTest << endl;
cout<< "这是函数内部测试成员,"<< classTest->salary << endl;
return classTest;//返回一个指针,指向一个类的地址
// 程序结束会执行类的析构方法,释放类的内存空间~Test()
}
int main(){
// Test* test1;
// test1->salary = 100.0;
//引用测试
Test var;
Test &vartest = var;
var.salary = 99;
cout << "这是引用示例1,"<< vartest.salary << endl;
vartest.salary = 100;
//这里vartest引用类var,改变vartest的值仍会改变var的值,实际上引用就是将当前对象指向另一个对象,但是只能指一次
cout << "这是引用示例2,"<< var.salary << endl;
//引用测试结束
cout << endl;
//返回值是类对象的测试
Test *pcl = NULL;
pcl = retclass(999.99);
/*这里返回值是一个Test类,调用retclass函数时,虽然在函数内部给salary赋值为999.99,
但是本次赋值只在函数内部有效,通过返回值(类的地址)去访问类的成员是无效的,
因为函数执行返回后就调用类析构函数,在内存中已经将创建的类释放*/
cout << pcl << endl;
cout << "函数外部调用类的成员,"<< (*pcl).salary << endl;//通过返回值(类的地址)去访问类的成员是无效的
pcl->salary = 999;//需要重新赋值才有效
cout << "函数外部重新对类的成员赋值,"<< pcl->salary << endl;
//返回值是类对象的测试结束
//字符串测试
char str1[5] = {'l','l','l','l','\0'};
char str2[5] = "ilov";
string str3;
str3 = "ilove";
strcat(str1,str2);
cout << "继续使用c的字符串,"<< "str1 的长度是:"<< strlen(str1) << ",str1= " << str1 << endl;
cout << "使用C++字符串string类,"<< "str3 的长度是:"<< str3.size() << ",str3= " << str3 << endl;
//字符串测试结束
return 1;
}
引用
指向指针的引用
![]()
常量引用-const