c++类与初始化

--c++类与初始化
--------------------------------2014/09/04
1. 类的定义(头文件、声明文件)看成类的外部接口,一般写成.h头文件。
2. 类的成员函数定义(源文件)看成类的内部实现,一般写成.cpp/.cc文件。
 
成员函数定义
  返回值 类名::函数名(参数列表) {
    函数体;}
类定义
  class 类名 {
  成员变量
  成员函数
};  --注意这里有分号
看一个简单的例子:
student.h
#include<string>
using namespace std;
class student {
public:
        void set_name(string v_name);
        void set_age(int v_age);
        void set_school_name(string v_school_name);
        string get_name();
        int get_age();
        string get_school_name();

private:
        string name;
        int age;
        string school_name;
};
student.cc
 
#include "student.h"
void student::set_name(string v_name) {
        name=v_name;
}
        void student::set_age(int v_age) {
        age=v_age;
}
        void student::set_school_name(string v_school_name) {
        school_name=v_school_name;
}
        string student::get_name() {
        return name;
}
        int student::get_age() {
        return age;
}
        string student::get_school_name() {
        return school_name;
}
 
main.cc
 
#include<iostream>
#include "student.h"
using namespace std;
int main(int argc,char *argv[]) {
        student *a=new student();
        a->set_name("Jack");
        a->set_age(25);
        a->set_school_name("Haford");
        cout<<a->get_name()<<"  "<<a->get_age()<<"  "<<a->get_school_name()<<endl;
} 
编译源文件
[[email protected] student]# g++ -o main main.cc student.cc   --源文件编译 
[[email protected] student]# ./main Jack 25 Haford
 
 
时间: 2024-10-11 23:25:47

c++类与初始化的相关文章

Red5源代码分析 - 关键类及其初始化过程

原文地址:http://semi-sleep.javaeye.com/blog/348768 Red5如何响应rmpt的请求,中间涉及哪些关键类? 响应请求的流程如下: 1.Red5在启动时会调用RTMPMinaTransport的start()方法,该方法会开启rmtp的socket监听端口(默认是1935),然后使用mina(apache的io操作类库)的api将RTMPMinaIoHandler绑定到该端口. 2.RTMPMinaIoHandler上定义了messageReceived.m

java类的初始化顺序

java类的初始化顺序 (2008-10-21 13:30:15) 转载▼ 标签: java 初始化 继承初始化 it 分类: Java 对于静态变量.静态初始化块.变量.初始化块.构造器,它们的初始化顺序依次是(静态变量.静态初始化块)>(变量.初始化块)>构造器.我们也可以通过下面的测试代码来验证这一点: public class InitialOrderTest { // 静态变量 public static String staticField = "静态变量";

Java类的初始化

Java提供了两种不同的初始化类型,分别是类的初始化和对象的初始化.类成员都是静态的,默认会设置一个值.对象的初始化会在构造函数里面进行.但如果想要赋给静态变量非默认值,或者是初始化一类共有的对象属性(不论调用哪个构造函数),那么就需要一些特殊的方法.提供了静态初始化块和非静态初始化块来处理这两种情况. 静态初始化块 静态初始化块是通过static{}来定义的.一个简单的代码示例如下: public class CorderStatic { staticint idx; static{ Syst

静态成员不能在类内初始化

为什么静态成员不能在类内初始化 在C++中,类的静态成员(static member)必须在类内声明,在类外初始化,像下面这样. class A { private: static int count ; // 类内声明 }; int A::count = 0 ; // 类外初始化,不必再加static关键字 为什么?因为静态成员属于整个类,而不属于某个对象,如果在类内初始化,会导致每个对象都包含该静态成员,这是矛盾的. #include <iostream> #include <cst

类的初始化分析要点代码

分析要点: 1.初始化:类型(枚举,结构,类)的实例在构建过程中得一系列过程 2.初始化的主要目的:对内部的存储属性赋值 3.结构:如果不自觉添加初始化,会自动添加默认init和memberwise init 类的初始化:代码如下 class YY { var i:int// 会报错,因为没有初始值(存储属性) } //NN没有构造器 class NN{ var i:int init(a:int){i=1} } //黄金规则1:实例化之后所有的存储属性必须有值(两种赋值方法) //专门(特定)的

《深入理解java虚拟机》:类的初始化

深入理解java虚拟机>:类的初始化 类从被加载到虚拟机内存中开始,到卸载出内存为止,它的整个生命周期包括:加载.验证.准备.解析.初始化.使用和卸载七个阶段.其中验证.准备.解析3个部分统称为连接.类加载的过程包括了加载.验证.准备.解析.初始化五个阶段. 加载.验证.准备.初始化和卸载这5个阶段的顺序时确定的,类的加载过程必须按照这种顺序按部就班的开始,而解析阶段则不一定,它在某些情况下可以在初始化阶段之后开始,这是为了支持Java语言的运行时绑定(也成为动态绑定或晚期绑定).另外注意这里的

类的生命周期(下)类的初始化【转】

上接深入java虚拟机——深入java虚拟机(二)——类加载器详解(上),在上一篇文章中,我们讲解了类的生命周期的加载和连接,这一篇我们接着上面往下看. 类的初始化:在类的生命周期执行完加载和连接之后就开始了类的初始化.在类的初始化阶段,java虚拟机执行类的初始化语句,为类的静态变量赋值,在程序中,类的初始化有两种途径:(1)在变量的声明处赋值.(2)在静态代码块处赋值,比如下面的代码,a就是第一种初始化,b就是第二种初始化 [html] view plaincopyprint? public

类的初始化&amp;实例化顺序

讲到类的初始化和实例化(见我的<Class的生命周期>),不得不提提初始化和实例化的顺序,我想这也是一直困扰了很大一部分人. 从大流程来说,类肯定是先初始化,再实例化的,这里得出第一个顺序: 静态域 --> 实例域 --> 构造函数.另外要符合任何子类的动作都会触发父类:父类 --> 子类.所以得出原则:[先静态后实例:先父类后子类] 而且同一个域的顺序可以分成两步: 创建-->赋值 对于静态域,其先经过链接创建静态变量,赋default值:再到初始化阶段给静态变量赋a

虚拟机类加载--2.类的初始化

初始化是类加载过程的最后一步,但由于比较重要,故放在前面先讲. 在前面的连接(准确来说是准备)阶段,类的变量已经被赋予默认值(如int类型为0,布尔类型为false,引用类型为null等).而在初始化阶段,则根据程序员通过程序制定的主观计划去初始化类变量和其他资源.或者可以从另一个角度来表达:初始化阶段是执行类构造器<clini>()方法的过程. 1. <clinit>()方法是由编译器自动收集类中所有类变量的赋值动作和静态语句块(static{})中的语句合并产生的,收集的顺序是