类指针引用

类的对象指针和二级指针

 1 #include <iostream>
 2
 3 class myclass
 4 {
 5 public:
 6     int x;
 7     int y;
 8 public:
 9     myclass(int, int);//构造函数
10     void printxy();
11 };
12
13 myclass::myclass(int a, int b) :x(a), y(b)//构造函数
14 {
15
16 }
17
18 void myclass::printxy()
19 {
20     std::cout << x << " " << y << std::endl;
21 }
22
23 void main()
24 {
25     myclass *p(new myclass(10, 9));//一级指针
26
27     p->printxy();
28
29     myclass class1(20, 1);
30
31     myclass **pp = &p;//二级指针
32
33     (*pp)->printxy();//一级指针
34     (**pp).printxy();//0级指针
35
36     system("pause");
37 }

123

时间: 2024-10-07 02:21:40

类指针引用的相关文章

基类指针引用派生类对象

#include<iostream> #include<cstring> using namespace std; class A{ char name[20]; public: void put_name(char *n){ strcpy_s(name, n); } void get_name()const{ cout << name << endl; }; }; class B:public A{ char num[20]; public: void p

静态联编,动态联编,类指针之间的关系,虚函数与多态性,纯虚函数,虚析构函数

1.静态联编,是程序的匹配,连接在编译阶段实现,也称为早期匹配.重载函数使用静态联编. 2.动态联编是指程序联编推迟到运行时进行,所以又称为晚期联编.switch语句和if语句是动态联编的例子. #include<iostream> void go(int num) { } void go(char *str) { } //class //::在一个类中 class A { public: void go(int num) { } void go(char *str) { } }; void

C++基础2 引用 函数扩展: 默认值 占位符 指针 重载 类:引用类指针 声明实现分开写

[难点]指针引用 [email protected]:~/c++$ cat main.cpp  #include <stdlib.h> #include "iostream" using namespace std; int a = 20; struct Teacher { int age; char name[64]; }; int fun1(struct Teacher ** p) { int ret = 0; if(p == NULL) { ret = -1; ret

为什么基类指针和引用可以指向派生类对象,但是反过来不行?

为什么基类指针和引用可以指向派生类对象,但是反过来不行? 基类指针和引用 BaseClass *pbase = NULL; DerivedClass dclass; pbase = & dclass; 基类指针和引用可以指向派生类对象,但是无法使用不存在于基类只存在于派生类的元素.(所以我们需要虚函数和纯虚函数) 原因是这样的: 在内存中,一个基类类型的指针是覆盖N个单位长度的内存空间. 当其指向派生类的时候,由于派生类元素在内存中堆放是:前N个是基类的元素,N之后的是派生类的元素. 于是基类的

C++ 基类指针,子类指针,多态

基类指针和子类指针之间相互赋值(1)将子类指针赋值给基类指针时,不需要进行强制类型转换,C++编译器将自动进行类型转换.因为子类对象也是一个基类对象. (2)将基类指针赋值给子类指针时,需要进行强制类型转换,C++编译器将不自动进行类型转换.因为基类对象不是一个子类对象.子类对象的自增部分是基类不具有的.(强制转换告诉编译器为对象增加子类所特有的部分) fish* fh1;  animal* an1 = new animal; fh1 = (fish*)an1; 原理: 当我们构造fish类的对

类的引用和复制

#include<iostream> using namespace std; class base{ public: base(){} virtual void func(int i = 12) { cout<<"base "<<i<<endl; } }; class Derived:public base{ public: Derived(){} virtual void func(int i = 22) { cout<<

c++中两个类互相引用的问题

最近在改一个C++程序的时候碰到一条警告信息,警告信息为:“ 删除指向不完整“Q2DTorusNode”类型的指针:没有调用析构函数                1> c:\users\lxw\desktop\dragonfly第二阶段实验\最终的实验版本\实验目录\dragonfly_modify\src\Q2DTorus.h(6) : 参见“Q2DTorusNode”的声明 ” 警告信息很是奇怪,其实出于强迫症的原因想要解决掉这个警告信息,而且从警告信息来看,程序也应该存在内存泄露的问题,

类相互引用问题

在C语言中,如果头文件不加任何保护的话,两个头文件相互包含会导致编译出错,如下面两个文件: a.h #include "b.h" b.h #include "a.h" 使用gcc编译的话,会报下面的错误: from main.c:2:b.h:1:15: error: #include nested too deeply #include "a.h" ^make: *** [all] Error 1 这是一个无限循环,如果加了保护性的代码,则不会出

C++中未定义类的引用。

在有时候因为类太大,需要在类在后面定义: 例如: class Y{ void f(X); }; class X{ //一些成员数据和函数 }; //error 因为c++要求任何一个变量在引用之前必须声明.,在上述定义中我们可以调换两者的顺序来实现. 但是如果形成了循环? class X{ void f1(Y) }; class Y{ void f(X); }; //error 这种就不能通过简单的调换顺序来通过编译器在调用之前必须声明的金科玉律了. 那么我们可以通过在上述中先声明? class