C++调用成员函数的几种方法总结

分类: 365网址经常打不开 时间: 2025-07-10 09:07:48 作者: admin 阅读: 8117
C++调用成员函数的几种方法总结

1.对象调用

#include

using namespace std;

class Person

{

public:

void sayHello()

{

cout << "Hello!" << endl;

}

};

int main()

{

Person p;

p.sayHello();//对象调用成员函数

return 0;

}

2.指针调用

#include

using namespace std;

class Person

{

public:

void sayHello()

{

cout << "Hello" << endl;

}

};

int main()

{

Person* p = new Person();//new操作符在堆上动态分配了一个内存空间来存储一个Person对象,

//然后调用默认的构造函数Person()来初始化这个Person对象,然后返回一个指向该对象的指针

p->sayHello();

delete p;//释放p所指向的动态分配的内存空间,而不是释放p本身

return 0;

}

3.通过引用调用

#include

using namespace std;

class Person

{

public:

void sayHello()

{

cout << "Hello" << endl;

}

};

int main()

{

Person& p = *(new Person());//使用new关键字在运行的时候动态分配内存为Person类型,

//然后用指针、解引用、引用操作来创建该类型的引用p

// 记住:&用在对象前面时只有引用的作用,就会创建一个指向该对象的别名

// &在声明引用的时候不是在内存中创建一个新的对象,而是创建该对象的一个新的别名

// &声明一个指向Person对象的引用,这个引用被命名为P,

// 该引用的类型是"Person&",而不是"Person*"

// 这个p是引用,不是对象;p也是指向这个对象的一个指针

//new Person()在堆区分配一个新的对象

//*(new Person())返回一个Person对象详

p.sayHello();//引用调用

delete &p;//delete时需要传递该指针指向的地址,用&p就可以获得指针所指向内存的地址,

//而不是传递指针p本身

return 0;

}

4.在成员函数内通过this指针来调用其他成员函数

#include

using namespace std;

class Person

{

public:

void sayHello()

{

cout << "Hello!" << endl;

this->sayWorld();//this指针的对象是当前调用成员函数的对象,即this指向的是p;

//等价于直接调用sayHello();

}

void sayWorld()

{

cout << "World" << endl;

}

};

int main()

{

Person p;

p.sayHello();

return 0;

5.在成员函数内通过类名和作用域操作符来调用静态成员函数

#include

using namespace std;

class Myclass

{

public:

static int staticFunc(int x)

{

return x * x;

}

//在成员函数内通过类名和::访问成员函数

//int r = Myclass::staticFunc(int x);错误

//不能在函数内定义成员函数的时候,不能直接调用类的其他成员函数进行初始化

//函数体内的代码是在对象被实例化后才会被执行的,而类的成员函数或者成员变量

//的初始化化是在对象的

//构造函数中进行的.如果在函数体内直接调用其他成员函数进行初始化,那么这个被

//调用的成员函数可能还没被初始化,从而报错

//改正1

/*Myclass(int x)

{

int result = Myclass::staticFunc(x);

}*/

//改正2

int nonStaticFunc(int x)

{

int result = Myclass::staticFunc(x);

return result;

}

//在类的成员函数内通过类名和::来访问其他成员函数时可以的,

//因为类的成员函数通过this指针

//访问类的成员变量和其他成员函数

//在类的成员函数内部,this指针指向当前对象实例的地址,

//所以可以通过this指针来访问类的成员函数和变量,及时这些成员函数还没有被初始化

};

int main()

{

Myclass p;

int result=p.nonStaticFunc(5);

cout << "result = " << result << endl;

return 0;

}

相关推荐