精华内容
下载资源
问答
  • es5 let Animal = function(type){ this.type = type } Animal.prototype.eat=function(){ console.log('like eat food') } var dog = new Animal("dog"); var mok = new Animal("mok");...console.log(dog);...

    es5

    let Animal = function(type){
        this.type = type
    }
    Animal.prototype.eat=function(){
        console.log('like eat food')
    }
    var dog = new Animal("dog");
    var mok = new Animal("mok");
    console.log(dog);
    console.log(mok)
    mok.constructor.prototype.eat = function(){
        console.log("haihai1")
    }
    dog.eat()
    mok.eat()
    

    es6

    class Animal{
    constructor(type){
        this.type = type
    }
    eat(){
        console.log('eat')
    }
    
    }
    var dog = new Animal("dog");
    var mok = new Animal("mok");
    dog.eat()
    mok.eat()
    ```javascript
    class Animal{
    constructor(type){
        this.type = type
    }
    eat(){
        console.log('eat')
    }
    
    }
    var dog = new Animal("dog");
    var mok = new Animal("mok");
    dog.eat()
    mok.eat()
    
    展开全文
  • //静态声明和赋值 CT *p1[100]; for (int i=0; i<100;i++) ...上面的代码怎么改成动态声明? int len=100; CT *pB[]; pB[len] = new CT[len]; //这又无法带参数 谢谢
  • template class List{ struct Node{}; ... class const_iterator{}; class iterator:public const_iterator{}; ... }; struct Node{ Object data; ... }; 这样定义出现了错误,但不知如何解决。...
  • xx.hpp class CameraDevice { public: ...定义一个 CameraDevice::CameraDevice a; 就会提示 variable has incomplete type. 难道必须要把的实现 和声明写在一起才能解决吗 还是有其他解决办法
  • ``` static inline double getTotal(); ``` 在外要不要写static 和inline
  • 因为其实是变量和行为操作整合在一起的一套规则,是虚幻的没有实际意义的...但是我利用这个规则(学生)创建一个对象叫小明,这就是实实在在的根据的规则创建出的对象,所以我们一般把叫做声明,把对象叫做创建。

    为什么不经常说创建一个类呢?


    因为类其实是变量和行为操作整合在一起的一套规则,是虚幻的没有实际意义的,比如“学生”。但是我利用这个规则(学生)创建一个对象叫小明,这就是实实在在的根据类的规则创建出的对象,所以我们一般把类叫做声明,把对象叫做创建。


    我们在xcode里面可以 New File >>> Objective-C class来新建一个,这里面填写的名称就是类名称,一般有个短前缀+类名首字母大写,比如ASStudent,AS是短前缀。


    我们一般声明类都是从根类继承过来声明,因为根类里面已经给我们封装了内存分配、内存回收、对象初始化、对象描述等等,如果你不继承根类而是自己直接声明的话,要写很多东西。这里面的根类是NSObject。


    点击确定后,我们发现有两个已经创建好的文件,一个是ASStudent.h(头文件),一个是ASStudent.m(OC文件)。


    • 我们在ASStudent.h(头文件)里面声明这个类:包括变量和方法的定义(就是一些不同于我们常见的一种函数定义)
    • 在ASStudent.m里面写具体的方法(其实具体的函数内容)
    • 然后在main.m里面引用这个类来创建对象等等即可

    我们先来看一下ASStudent.h里面的内容(就是怎么声明一个类的框架):

    #import <Foundation/Foundation.h>
    //声明的类是以@interface开始,@end结束,这些是刚刚新建后自动生成的
    @interface ASStudent:NSObject{
        //变量一定要写在花括号{}里面
        @protected  //默认都是protected,可省略
        NSString *name;  //之所以有个*,是因为这里定义的变量其实是个指针
        @private
        NSString *sid;
        @public  //只有public变量才能被直接调用
        unsigned int age;    
    }
    //方法也就是函数,通常写在这里,具体后面讲,这里先留个印象
    -(void)setName:(NSString*)aName; //函数和public变量一样可被直接调用访问
    -(NSString*) name;
    @end

    我们再来看一下ASStudent.m里的内容(就是怎么具体写函数的):

    #import "ASStudent.h"
    //这个开始和结束也是自动生成好了的
    @implementation ASStudent
    //下面是设置姓名的函数,setName是函数名,aName是变量参数,(NSString*)是指定这变量参数类型
    -(void) setName:(NSString*)aName{
        name=aName
    }
    //下面是返回调用姓名的函数
    -(NSString*)name{
        return name;
    }
    @end

    我们再来看一下主函数中是怎么使用这个类的:

    #import <Foundation/Foundation.h>
    #import "ASStudent.h" //需要引入这个类才能使用
    int main(int argc,const char * argv[]){
        @autoreleasepool{
        ASStudent * student=[[ASStudent alloc] init]  //实例化出一个对象,就是创建,并初始化
        student->age=20;  //因为age是public所以可直接调用并赋值
        [student setName:@"tom"];  //调用函数来给name赋值
        NSLog("%@",[student name]);  //调用name也不能直接调用,而是通过函数来调用
        //而sid由于既不能直接调用,又没有函数来操作它,所以没法子用
        }
        return 0;
    }

    了解整个流程和顺序后,我们回头重点看一下方法也就是函数的解读:


    (1)方法的类型有两种,一种是类方法(Class Method),前面是加号+;另一种是实例方法(Instance Method),前面是减号 - 。区别就是实例方法如上面我们的例子一样,需要先实例化即创建一个对象student出来,然后用这个student对象来调用这个方法。而类方法,则不需要实例化个对象,而直接用类来调用即可。如下:


    在ASStudent.h里面增加一个方法:

    //类方法前面是加号+,如果没有参数则直接写个函数名即可
    +(void)print;

    在ASStudent.m里面写这个方法具体的内容:

    +(void)print{
        NSLog(@"我是类方法!");
    }
    下面是最重点的,直接用类来调用:

    //实例方法是用student对象来调用,而类方法是直接来调用
    [ASStudent print];

    (2)方法的签名:其实就是方法名称+参数,不包括括号里面的返回值和参数类型这些。方法的签名不能一样,也就是我们通常讲的“你不能定义两个一模一样的方法,那就乱套了”。怎么判断方法是否重名?去掉括号里面的返回值和参数类型,再看是否一样?是就重名。如:

    //去掉括号里的返回值类型,一样的,所以重名
    -(void)name;
    -(NSString*)name;
    
    //去掉返回值类型和参数类型,不一样,所以不重名
    -(void)name:(int)a;
    -(NSString*)name;
    
    //重名
    -(void)name:(int)a;
    -(NSString*)name:(NSString*)a;

    最后补充:

    • 实例方法(Instance Method)里面可以直接引用实例变量;
    • 方法都是公有public的,但如过这个方法只在实现(ASStudent.m)里出现,没有在声明(ASStudent.h)里出现,那么可以认为是私有的(初学者可以自动忽略这么复杂的话);
    • 之前创建出的student要释放掉,加一个[student release];  alloc和release一般要配对使用。
    展开全文
  • 例如初始化为0 1 2 3 4……在.cpp文件中怎么去赋初始值啊,还有map之的,为什么我用好多种方法有有问题
  • 想建抽象,里面有一些参数和虚函数,然后再建个子继承抽象,重写实现虚函数(本人菜鸟,不知道这么说对...我知道要在头文件里声明,在源文件里实现,但具体怎么个格式不清楚,总报错。希望大家帮帮忙!谢谢了
  • Function.prototype.addMethod=function(name,fn){ this.prototype[name]=fn; } function Methods(){ ...注销掉的方法去调用condition 方法 报未定义或者null引用的属性Methods,这个怎么调用啊,求大神指点!
  • C#中可以用sealed关键字,但是,C++中怎么阻止一个类被继承呢? 方法就是把这个类的构造函数声明成private的,这样就不能被继承了。当然更好的办法是用非技术的手段了:) 方法1: 构造函数private,提供一个Factory...

    C#中可以用sealed关键字,但是,C++中怎么阻止一个类被继承呢?

    方法就是把这个类的构造函数声明成private的,这样就不能被继承了。当然更好的办法是用非技术的手段了:)

    方法1: 构造函数private,提供一个Factory方法,缺点就是使用者必须用这个factory方法,不能直接使用这个类。

    class NoDerive {
        NoDerive(){};
    public:
        static NoDerive GetNoDerive(){ return NoDerive();};
        ~NoDerive(){};
    };

    方法2: 构造函数public,但是虚拟继承自一个private构造函数,没有方法1的缺点,但是看着有点hack。

    class NoDerive;
    class NoDeriveBase
    {
        friend class NoDerive;
        NoDeriveBase(){};
    };
    class NoDerive:private virtual NoDeriveBase {
    public:
        NoDerive(){};
        ~NoDerive(){};
    };

    转载于:https://www.cnblogs.com/fresky/archive/2012/12/04/2802346.html

    展开全文
  • 已经存在一个类B,怎样声明一个类A,里面有一些成员类型分别有 long string list 上面的这些类型,然后我不知道怎么去声明,对应的类型是什么 ? 还有一些比如copy,retain,strong等是什么类型用什么???
  • 我在java中制作一个cookie clicker克隆来练习我的java技能,我有一个小问题,我有一些变量在main方法中声明,我想从ActionListener访问.以下是ActionListener的一些示例代码. int变量(例如clicks,grandamaCost)和...

    我在java中制作一个cookie clicker克隆来练习我的java技能,我有一个小问题,我有一些变量在main方法中声明,我想从ActionListener类访问.以下是ActionListener类的一些示例代码. int变量(例如clicks,grandamaCost)和JTextFields(例如display,cpsDisplay)都在main方法中.我想知道如何在main方法中访问变量,以便此代码可以在其他类中工作.谢谢!

    @Override

    public void actionPerformed(ActionEvent e) {

    JButton b = (JButton) e.getSource();

    button(b.getText());

    }

    public void button(String input) {

    switch (input) {

    case "Cookie":

    clicks++;

    display.setText("Cookies: " + clicks + "");

    cpsDisplay.setText("CPS: " + cps);

    break;

    case "Buy grandma":

    if (clicks >= grandmaCost) {

    grandmas++;

    clicks = clicks - grandmaCost;

    grandmaCost = (int) ((.15 * grandmaCost) + grandmaCost);

    cps++;

    }

    display.setText("Cookies: " + clicks + "");

    prices[0].setText("$" + grandmaCost);

    cpsDisplay.setText("CPS: " + cps);

    break;

    case "Buy monkey":

    if (clicks >= monkeyCost) {

    monkeys++;

    clicks = clicks - monkeyCost;

    monkeyCost = (int) ((.15 * monkeyCost) + monkeyCost);

    cps = cps + 2;

    }

    display.setText("Cookies: " + clicks + "");

    prices[1].setText("$" + monkeyCost);

    cpsDisplay.setText("CPS: " + cps);

    break;

    case "Buy Teemo":

    if (clicks >= teemoCost) {

    teemos++;

    clicks = clicks - teemoCost;

    teemoCost = (int) ((.15 * teemoCost) + teemoCost);

    cps = cps + 3;

    }

    display.setText("Cookies: " + clicks + "");

    prices[2].setText("$" + teemoCost);

    cpsDisplay.setText("CPS: " + cps);

    break;

    }

    }

    }

    展开全文
  • class B{public:template /*void(T::*fun)(double,double):T的成员函数fun指针函数声明类的成员函数和普通的全局函数有区别,所以在使用的时候要加以区别如果是 void(*fun)(double,double):形式则只...
  • 作者:鲸90830链接:https://www.cnblogs.com/whale90830/p/10520364.html和对象OOP第二课1、的构成1.1 从结构到1.2 的构成2、成员函数的声明2.1 普通成员函数形式2.2 将成员函数以内联函数的形式进行说明3...
  • C++---如何在声明一个常量?

    千次阅读 2013-07-23 20:17:20
    需求:有时候需要在定义中声明一个常量,怎么声明呢? 常见错误用法: class Student {。。。  const int Len=10;  char name[Len]; //错误;声明时,只是描述了对象的形式,并没有真正的创建对象; }//通俗...
  • 封装将某些东西包装在一起,然后以新的完整形式呈现出来;隐藏属性、方法或实现细节的处理方式称为封装;...使用已经定义好的,创建该对象的过程称为“实例化”。在C语言中,必须要先声明结构体变量,才可...
  • 我定义一个类类型point,我是将类的声明和类的定义分开来实现的,point.cpp文件的代码如下: #include "point.h" using namespace std;//如果注释掉一行编译器提示:“cout”: 未声明的标识符,如果不注释掉编译器...
  • 错误C2027:使用了未定义类型、两个类之间相互引用成员、向前声明错误C2027:使用了未定义类型向前声明单独编译两个类之间相互引用成员通过单独编译和向前声明方法实现两个类之间相互引用成员...可以声明一个类而不定义它
  • 我这是定义了两数据源工厂,在普通java怎么获得name是jahwaSessionFactory的bean呢? 1、@Qualifier("jahwaSessionFactory")使用这Qualifier,但是不管我把这注解放到上还是定义的变量上都不行 2、...
  • 的三大成员函数构造函数复制构造函数析构函数构造函数定义:“构造函数”是一类特殊的成员函数,其名字和的名字一样,并且不写返回值类型(void 也不写)。也成重载构造函数。语法:lass {public:(参数表);//......
  • class Person(object): def __init__(self, name): ...如上,我想在创建person的时候给它声明一个gun属性,但并不想给它赋值,这要怎么搞? 怎么才能在.gun的时候能点出来并且.gun.name也能点出来
  • C++的定义和声明怎么

    千次阅读 2019-01-08 17:42:59
    C++语言可以看成是C语言的扩展和改进,相对于C语言,C++语言主要是增添了面向对象的特性。(Class)则是C++面向对象编程的实现方式。 无论是何种编程语言,进行面向...首先我们来了解一下声明,先来看一个例子...
  • 一个接口 只有方法的特征(只有声明) 没有 方法的实现(没有方法体) ,因此这些方法可以在不同的地方被不同的实现,而这些实现可以具有不同的行为(功能)如果说的内部封装了成员变量、构造方法和成员方法,...
  • A.h里定义了class B C.cpp里include A.h并且引用了B声明BB b; G++ C.cpp -o X.so 为什么用JNI调用X.so运行时,错误提示找不到B
  • 假定我们有这样一个需求:写一个排序方法,能够对整型数组、字符串数组甚至其他任何类型的数组进行排序,该如何实现? 可以使用 Java 泛型。 使用 Java 泛型的概念,我们可以写一个泛型方法来对一个对象数组排序。...
  • 假设有一个类B,如果把B的构造函数声明为私有的,那么B这个类就不能被继承,但是这也引入了一个问题,不能在类外定义B类型的对象,那要怎么解决这个问题呢??? 方法1: 我们可以在类内创建一个对象并提供一个静态...
  • )、假如两个类class A和class B,A聚合(组合)B,B又依赖A,那么该怎么来实现呢? 那么可行的方案: 将类A的声明放在A.h,并在类A前加上句class B;(类的声明方法),这样就能在类A中定义类B的指针或...
  • var s string = “Golang"n := 666Go 语言有两变量 包级别(package varible):在 package 级别可见的变量。如果是导出变量,该变量也可以被视为全局变量; 局部变量(local varible):函数或方法体内声明的变量,仅...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 1,655
精华内容 662
关键字:

怎么声明一个类